package br.com.javagyn.OLD;

import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import br.com.javagyn.exception.NegocioException;
import br.com.javagyn.service.base.AppService;

@Named
public class LancamentoService extends AppService<Lancamento, LancamentoBO> {

	private static final long serialVersionUID = 1L;
	
	@Inject
	private LancamentoBO bo;

	public List<Lancamento> listagemLancamentos() {

		//return this.lancamentoDAO.listar();
		return this.getBo().getDao().listar();
	}
	
	public List<String> descricoesQueContem(String descricao) {
		
		//return this.lancamentoDAO.descricoesQueContem(descricao);
		return this.getBo().getDao().descricoesQueContem(descricao);
	}

	//@Transactional
	public void salvar(Lancamento lancamento) throws NegocioException {
		
		if (lancamento.getDataPagamento() != null
				&& lancamento.getDataPagamento().after(new Date())) {
			throw new NegocioException(
					"Data de pagamento não pode ser uma data futura.");
		}
		this.getBo().getDao().salvar(lancamento);
		//this.lancamentoDAO.salvar(lancamento);
	}

	//@Transactional
	public void excluir(Lancamento lancamento) throws NegocioException {
		//lancamento = this.lancamentoDAO.obter(lancamento.getId());
		lancamento = this.getBo().getDao().obter(lancamento.getId());

		if (lancamento.getDataPagamento() != null) {
			throw new NegocioException(
					"Não é possível excluir um lançamento pago!");
		}

		this.getBo().getDao().remover(lancamento);
	}

	@Override
	public LancamentoBO getBo() {
		return bo;
	}
	
}
